package com.fcscs.cservice.gwt.client;

import java.util.List;

import com.fcscs.cservice.domain.PropertyConfigRestaurant;
import com.fcscs.cservice.domain.Restaurant;
import com.fcscs.cservice.domain.RestaurantConfig;
import com.fcscs.cservice.domain.model.RestaurantConfigModel;
import com.fcscs.cservice.domain.model.RestaurantConfiguration;
import com.fcscs.cservice.domain.model.RestaurantView;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("../gwt/restaurant")
public interface RestaurantService extends RemoteService{


	/**
	 * @param <E>
	 * @param cls
	 * @param id
	 * @return
	 */
	<E extends Restaurant> E get(E cls, long id);

	/**
	 * @param id
	 * @return
	 */
	Restaurant get(long id);

	/**
	 * @param loc
	 * @return
	 */
	Boolean delete(Restaurant loc);

	/**
	 * @param loc
	 */
	void permDelete(Restaurant loc);

	/**
	 * @param <E>
	 * @param loc
	 * @return
	 */
	<E extends Restaurant> E save(E loc);

	/**
	 * getRestaurants
	 * @param orgId organization id
	 * @param propId property id
	 * @return list list<Restaurant>
	 */
	List<Restaurant> getRestaurants(long orgId, Long propId);
	
	
	/**
	 * @param orgId
	 * @param propId
	 * @return
	 */
	List<RestaurantView> getRestaurantViews(long orgId,Long propId);
	
	
	/**
	 * @param model restaurantConfig model
	 * @return
	 */
	RestaurantConfigModel saveRestaurantConfigModel(RestaurantConfigModel model);
	
	
	/**
	 * @param orgId
	 * @param propId
	 * @return
	 */
	RestaurantConfigModel getRestaurantConfigModel(long orgId,Long propId);
	
	
	/**
	 * @param orgId
	 * @param propId
	 * @param restaId
	 * @return
	 */
	List<RestaurantConfig> getRestaurantConfig(Long propId,long restaId);
	
	/**
	 * @param resc
	 * @return
	 */
	RestaurantConfiguration saveRestaurantConfig(RestaurantConfiguration  resc);
	
	/**
	 * @param orgId
	 * @param propetyId
	 * @return
	 */
	PropertyConfigRestaurant getPropertyConfigRestaurant(Long propetyId);
	
	/**
	 * @param propConfigRest
	 * @return
	 */
	PropertyConfigRestaurant savePropertyConfigRestaurant(PropertyConfigRestaurant propConfigRest);
	
}
